1. Field of the Invention
The present invention relates generally to high speed data communications systems. More particularly, embodiments of the present invention relate to systems and methods for repositioning designated portions of data carried within a data stream, so as to facilitate subsequent processing of the data stream.
2. Related Technology
Computer and data communications networks continue to proliferate due to declining costs, increasing performance of computer and networking equipment, and increasing demand for communication bandwidth. Communications networks—including wide area networks (“WANs”) and local area networks (“LANs”)—allow increased productivity and utilization of distributed computers or stations through the sharing of resources, the transfer of voice and data, and the processing of voice, data and related information at the most efficient locations. Moreover, as organizations have recognized the economic benefits of using communications networks, network applications such as electronic mail, voice and data transfer, host access, and shared and distributed databases are increasingly used as a means to increase user productivity. This increased demand, together with the growing number of distributed computing resources, has resulted in a rapid expansion of the number of installed networks.
As the demand for networks has grown, network technology has grown to include many different physical configurations. Examples include GigE (“GigE”), Fiber Distributed Data Interface (“FDDI”), Fibre Channel, and InfiniBand networks. These and the many other types of networks that have been developed typically utilize different cabling systems, different bandwidths and typically transmit data at different speeds. In addition, each of the different network types have different sets of standards, referred to as protocols, which set forth the rules for accessing the network and for communicating among the resources on the network.
Notwithstanding such distinctions, many of the network types share certain similar characteristics. For the most part, the “traffic stream,” sometimes also referred to as “network traffic” or a “data stream,” that is transmitted over a network medium includes several classes of digital data units or data packets, each of which has a predefined format. One type of data unit is referred to as an “Ordered Set.” An Ordered Set is a set of bits, normally ranging from 8 to 32 bits, in multiples of 8, that are used for various purposes. For example, within the Fibre Channel protocol, there are several types, including, OPN, CLS, RRDY and IDLE.
Another type of data unit is referred to as a “frame” (also referred to as “data frames” or “data packets”), which can be of fixed or variable length. Typically, data frames have headers and footers on the two ends of the frame, and a data portion, or data payload, disposed between the header and footer. Other information may also be included in the frame, such as information for error checking functions for example.
Typically, the specific layout or configuration of such a data frame is specified by the “physical layer protocol” of the network involved. For example, depending on the frame format, a frame can begin with a “Start of Frame” delimiter (SOF), which is followed by a header, then a frame data payload, then a Cyclical Redundancy Check (CRC), and then ending with an “End of Frame” delimiter (EOF). There are several types of SOFs and EOFs, any one of which may be included in a frame. A frame header can be the combination of a channel header, followed by other optional high level headers, and other, optional, application specific headers.
The frame header and data payload, as well as other components of the frame, include one or more bundles of data, also referred to as “words.” According to High Speed Data Channel conventions, a word includes 32 bits, which is equivalent to 40 bits of serial data transfer on the network medium. The minimum size of a data packet component, such as a frame header or data payload, may vary depending upon the protocol or other requirements of the network over which the data packet is transmitted. Within the Fibre Channel protocol for example, the minimum size for such data packet components is 32 bits, or one word. As another example, the minimum size for data packet components within the GigE protocol is 8 bits.
Typically, transmissions between two network connected devices, for example, are passed through a hierarchy of protocol layers at each of the connected devices. Each layer in the first network connected device essentially carries on a conversation with a corresponding layer in the second network connected device, in accordance with an established protocol that defines the rules of communication between the layers.
For example, one well-known protocol standard is the Open Systems Interconnection (OSI) Model. OSI defines a seven-layer protocol model, which is widely used to describe and define how various vendors' products communicate. In the OSI model, the highest network layer is the Application Layer. The Application Layer is the level through which user applications, such as word processing programs or email programs for example, access network services. The next layer is the Presentation Layer which translates data from the Application Layer into an intermediate format and provides data encryption and compression services. The next layer is referred to as the Session Layer, which allows two applications on different network connected devices to communicate by establishing a dialog control between the two devices that regulates which side transmits, when each side transmits, and for how long. The next layer, the Transport Layer, is responsible for error recognition and recovery, repackaging of long messages into small packages of information, and providing an acknowledgement of receipt. The next layer is the Network Layer, which addresses messages, determines the route along the network from the source to the destination computer, and manages traffic problems, such as the switching and routing of data transmissions, as well as managing congestion that may occur as a result of such data transmissions.
It is the next layer, referred to as the Data Link Layer, which packages raw bits into the logical structured packages such as data packets or data frames, referred to above. The Data Link Layer corresponds, for example, to the GigE physical layer protocol noted above. This layer then sends the data frame or other data packet from one network connected device to another. The lowest layer in the hierarchal model is the Physical Layer, which is responsible for transmitting bits from one network connected device to another by regulating the transmission of a stream of bits over a physical medium such as a cable, optical fiber, or other type of conductor. The Physical Layer defines how the cable is attached to the network interface card within the network connected device and what transmission techniques are used to send data over the cable.
Thus, as a message comprising one or more data packets is passed down through each of these respective layers at the transmitting network-connected device, for example, and then back up through the protocol layers of the receiving network-connected device, each layer of the protocol(s) may add or strip off, as applicable, protocol information to/from the message. Thus, the “data” present within the data payload of the data frame at the Data Link Layer (e.g., the GigE data frame) typically comprises a protocol stack comprised of multiple message packets. Each message packet has its own protocol format, and it may in turn be embedded within the data payload of another higher layer message, also having its own different protocol.
As communication networks have increased in number, size and complexity however, they have become more likely to develop a variety of problems that are increasingly difficult to diagnose and resolve. Moreover, the demands for network operational reliability and increased network capacity, for example, emphasize the need for adequate diagnostic and remedial systems, methods and devices.
Exemplary causes of network performance problems include the transmission of unnecessarily small frames of information, inefficient or incorrect routing of information, improper network configuration and superfluous network traffic, to name just a few. Such problems are aggravated by the fact that many networks are continually changing and evolving due to growth, reconfiguration and introduction of new network typologies and protocols, as well as the use of new interconnection devices and software applications.
Consequently, as high speed data communications mature, many designs increasingly focus on reliability and performance issues. In particular, communications systems have been designed to respond to a variety of network errors and problems, thereby minimizing the occurrence of network failures and downtimes. In addition, equipment, systems and methods have been developed that allow for the testing and monitoring of the ability of a communications system to respond to and deal with specific types of error conditions on a network. In general, such equipment, systems, and methods provide the ability to selectively alter channel data, including the introduction of errors into channel data paths.
Thus, the use of such equipment permits monitoring of the response of the communications system to the altered data, and helps determine whether the communications system is capable of responding without experiencing adverse effects in performance such as loss of data or network traffic interruption. For example, a network system designer can perform any one of a number of different diagnostic tests to make determinations such as whether a system responded appropriately to incomplete, misplaced or missing tasks or sequences, how misdirected or confusing frames are treated, and how misplaced ordered sets are treated.
However, such diagnostic equipment, systems, and methods have not proven capable of dealing with the myriad of different and evolving protocol and network types. For example, to insure a realistic test environment, the equipment must be capable of injecting realistic errors in a manner that does not adversely affect the data transmission, or ‘line,’ rate of the network. In particular, such equipment should be capable of introducing errors into the network in substantially real time, so as to provide a realistic stress on the network. This has proven increasingly difficult given the present trend in communication network data transmission rates.
Moreover, the introduction of errors into a network data stream must be accomplished in a predictable manner in order to yield useful results. This is especially difficult to accomplish with certain types of protocols, such as GigE.
A significant concern relating to typical diagnostic equipment, systems, and methods is that they are generally only suited for use in conjunction with network data streams having data packets and/or data fields that are ‘word aligned.’ That is, the start of each data packet and data field within such a network data stream typically occurs, or is ‘aligned’ on, a 32 bit word boundary, or on some other regular configuration. Thus, these types of diagnostic equipment rely for their effectiveness on the somewhat regular and predictable arrangement of the data packets and data fields within the network data stream. Accordingly, such equipment is not well-suited for use in conjunction with network data streams that comprise data packets and/or data fields that may be aligned at any byte within a particular network data stream. Moreover, such equipment lacks the capability, in any event, to implement the alignment of the data packets and/or data fields that is required for its effective and useful operation. These shortcomings are particularly problematic in view of the fact that at some newer high speed communications protocols, such as Gigabit Ethernet, are based upon unaligned data streams.